sequenceDiagram

  participant Requestor
  participant ReqDT as Data Transfer Module <br /> (Requestor)
  participant ReqSC as Scheduler <br /> (Requestor)
  participant ReqGS as Graphsync <br /> (Requestor)
  participant ResGS as Graphsync <br /> (Responder)
  participant ResSC as Scheduler <br /> (Responder)
  participant ResDT as Data Transfer Module <br />  (Responder)
  participant Responder

  Note over Requestor,ReqGS: One System. Likely A Client
  Note over ResGS,Responder: One System. Likely A Miner

  Requestor ->> ReqDT : Initiate Pull
  ReqDT ->> ReqSC : Schedule Transfer
  ReqSC ->> ReqGS : Make Graphsync Request w/ Data Transfer Request Piggy Backed
  ReqGS ->> ResGS : Send Graphsync Request (w/ Data Transfer Request)
  ResGS ->> ResDT : Verify Request (validate & schedule)
  ResDT ->> Responder : Validate Pull Request
  Responder ->> ResDT : Pull Request validated
  ResDT ->> ResSC : Schedule Transfer
  ResSC ->> ResGS : Send response w/ DTR Accepted Piggy Backed
  ResGS ->> ReqGS : Send response w/ DTR Accepted Piggy Backed
  ReqGS ->> ReqSC : Response Progress (to end) (include DT Accepted)
  ReqSC ->> ReqDT : Request Complete
  ReqDT ->> Requestor : Request Completed (if listening)